#ifndef __SHA256__E43B2644_8C95_420E_9AD5_C450B89C48C6_H
#define __SHA256__E43B2644_8C95_420E_9AD5_C450B89C48C6_H

#include <stddef.h>

#pragma warning(disable: 4267)

#define SHA224_DIGEST_LENGTH    28
#define SHA256_DIGEST_LENGTH    32
#define SHA_LONG                unsigned int
#define SHA_LBLOCK              16
#define SHA_CBLOCK              (SHA_LBLOCK*4)
#define SHA_LAST_BLOCK          (SHA_CBLOCK-8)
#define HASH_LONG               SHA_LONG
#define HASH_CTX                SHA256_CTX
#define HASH_CBLOCK             SHA_CBLOCK
#define SHA256_CBLOCK           (SHA_LBLOCK*4)

typedef struct SHA256state_st {
    SHA_LONG h[8];
    SHA_LONG Nl, Nh;
    SHA_LONG data[SHA_LBLOCK];
    unsigned int num, md_len;
} SHA256_CTX;

unsigned char* Sha256Encrypt(const unsigned char* d, size_t n, unsigned char* md);

#endif
